package com.dhcc.DRGsHosp.web.controller;

import org.openkoala.koala.commons.InvokeResult;
import org.openkoala.security.shiro.CurrentUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dhcc.DRGsHosp.facade.DepartmentFacade;
import com.dhcc.DRGsHosp.facade.DrgsIndexCalFacade;
import com.dhcc.DRGsHosp.facade.dto.IndexCalDTO;

/**
 * 
 * @ClassName: DrgsIndexCalController  
 * @Description ：    系统指标计算
 * @Date: 2017年5月19日 上午10:15:58  
 * @Author LiuHongJun 
 * @Version 2.5.0 DHC-DRGs
 */
@Controller("drgsControllerLiuHongjun201705191054")
@RequestMapping("/DrgsIndexCal")
public class DrgsIndexCalController {
	@Autowired
	private DrgsIndexCalFacade drgsIndexCalFacade;
	@Autowired
	private DepartmentFacade departmentFacade;
	
	/**
	 * 
	 *  indexCal.  
	 *  @Description：指标计算
	 *  @Author LiuHongjun
	 *  @param request
	 *  @param response
	 *  @return以list的形式返回
	 *  @throws Exception 
	 *  @Date:2017年5月19日上午10:17:18
	 */
	@ResponseBody
    @RequestMapping(value = "/indexCal")
    public InvokeResult indexCal(IndexCalDTO dto){
		dto.setUserCode(CurrentUser.getUserAccount());
    	return InvokeResult.success(drgsIndexCalFacade.indexCal(dto));
    }
	
	/**
	 *  avgHospIndexCal.  
	 *  @Description：获取院内均值
	 *  @Author LiuHongjun
	 *  @param dto
	 *  @return 
	 *  @Date:2017年6月9日上午10:45:05
	 */
	@ResponseBody
    @RequestMapping(value = "/avgHospIndexCal")
    public InvokeResult avgHospIndexCal(IndexCalDTO dto){
    	return InvokeResult.success(drgsIndexCalFacade.avgHospIndexCal(dto));
    }
	/**
	 *  findCaseList.  
	 *  @Description：获取病例明细
	 *  @Author LiuHongjun
	 *  @param dto
	 *  @return 
	 *  @Date:2017年6月13日下午3:55:41
	 */
	@ResponseBody
    @RequestMapping(value = "/findCaseList",method = RequestMethod.POST)
    public InvokeResult findCaseList(IndexCalDTO dto,Boolean isAllUsers,@RequestParam int page, @RequestParam int pageSize,@RequestParam int sEcho,@RequestParam int caseTotalCount,@RequestParam String orderColumn,@RequestParam String orderMethod){
    	return InvokeResult.success(drgsIndexCalFacade.findCaseList(dto,isAllUsers,page,pageSize,sEcho,caseTotalCount,orderColumn,orderMethod));
    }

	/**
	 * 
	 *  findImportedCaseList.  
	 *  @Description：获取已导入病例明细
	 *  @Author mazhaoyan
	 *  @param dto
	 *  @param isAllUsers
	 *  @param page
	 *  @param pageSize
	 *  @param sEcho
	 *  @param caseTotalCount
	 *  @return 
	 *  @Date:2017年7月12日下午9:16:19
	 */
	@ResponseBody
    @RequestMapping(value = "/findImportedCaseList",method = RequestMethod.POST)
    public InvokeResult findImportedCaseList(String type2,String date,@RequestParam int page, @RequestParam int pageSize,@RequestParam int sEcho,@RequestParam int caseTotalCount,@RequestParam String orderColumn,@RequestParam String orderMethod){
    	return InvokeResult.success(drgsIndexCalFacade.findImportedCaseList(type2,date,page,pageSize,sEcho,caseTotalCount,orderColumn,orderMethod));
    }
	/**
	 * 
	 *  findImportedHcCaseList.  
	 *  @Description：获取已导入医保病例明细
	 *  @Author ZouYiyu
	 *  @param type2
	 *  @param date
	 *  @param page
	 *  @param pageSize
	 *  @param sEcho
	 *  @param caseTotalCount
	 *  @return 
	 *  @Date:2017年7月20日下午7:25:52
	 */
	@ResponseBody
    @RequestMapping(value = "/findImportedHcCaseList",method = RequestMethod.POST)
    public InvokeResult findImportedHcCaseList(String type2,String date,@RequestParam int page, @RequestParam int pageSize,@RequestParam int sEcho,@RequestParam int caseTotalCount,@RequestParam String orderColumn,@RequestParam String orderMethod,String hospCode){
    	return InvokeResult.success(drgsIndexCalFacade.findImportedHcCaseList(type2,date,page,pageSize,sEcho,caseTotalCount,orderColumn,orderMethod));
    }
	
	/**
	 * 
	 * @methodname    :releateQuotas
	 * @description   : 获取指标关联指标
	 * @param         :
	 * @author        :chenhanlin
	 * @return        :
	 * @date          :2017年06月22日
	 */
	@ResponseBody
	@RequestMapping(value = "/releateQuotas", method = RequestMethod.POST)
	public InvokeResult releateQuotas(String quotaCode){
		return InvokeResult.success(drgsIndexCalFacade.releateQuotas(quotaCode));
	}
	/**
	 * 
	 *  getLatestDate.  
	 *  @Description：获取最大分组数据时间
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年6月26日上午5:56:47
	 */
	@ResponseBody
	@RequestMapping(value = "getLatestDate")
	public InvokeResult getLatestDate(){
		return InvokeResult.success(drgsIndexCalFacade.getLatestDate());
	}
	/**
	 * 
	 * @methodname    :getManageSummary
	 * @description   : 获取外部标杆信息
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2017年6月28日
	 */
	@ResponseBody
	@RequestMapping(value = "getManageSummary",method=RequestMethod.POST)
	public InvokeResult getManageSummary(String msType){
		return drgsIndexCalFacade.getManageSummary(msType);
	}
	/**
	 * 
	 *  getGroupAllYears.  
	 *  @Description：获取分组数据有哪些年份的数据
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年6月29日下午1:40:03
	 */
	@ResponseBody
	@RequestMapping(value = "getGroupAllYears",method=RequestMethod.POST)
	public InvokeResult getGroupAllYears(IndexCalDTO dto){
		return drgsIndexCalFacade.getGroupAllYears(dto);
	}
	/**
	 * 
	 *  getTrendData.  
	 *  @Description：获取趋势图分析数据
	 *  @Author LiuHongjun
	 *  @param dto
	 *  @return 
	 *  @Date:2017年8月12日上午11:00:13
	 */
	@ResponseBody
	@RequestMapping(value = "getTrendData",method=RequestMethod.POST)
	public InvokeResult getTrendData(IndexCalDTO dto){
		return drgsIndexCalFacade.getTrendData(dto);
	}
	/**
	 *  @desp  ：监测当前分组方案以及监测时间范围内分组器版本号 
	 *  @Author： lhj
	 *  @param dto
	 *  @return
	 *  @Date  :2018年1月27日上午9:31:00
	 */
	@ResponseBody
	@RequestMapping(value = "checkVerVersion")
	public InvokeResult checkVerVersion(IndexCalDTO dto){
		return InvokeResult.success(drgsIndexCalFacade.checkVerVersion(dto));
	}
	
	/**
	 *  @desp  ：根据编码获取科室组
	 *  @Author： lhj
	 *  @param hospCode
	 *  @return
	 *  @Date  :2018年1月29日下午7:55:23
	 */
	@ResponseBody
	@RequestMapping(value = "getDepGroupByCode")
	public InvokeResult getDepGroupByCode(String hospCode,String depGroupCode){
		return InvokeResult.success(drgsIndexCalFacade.getDepGroupByCode(hospCode,depGroupCode));
	}
	
	/**
	 *  @desp  ：根据条件获取科室信息
	 *  @Author： lhj
	 *  @param dto
	 *  @return
	 *  @Date  :2018年1月26日下午5:06:03
	 */
	@ResponseBody
	@RequestMapping(value = "/findAllDepByHospCode")
	public InvokeResult findAllDepByHospCode(IndexCalDTO dto){
		return InvokeResult.success(departmentFacade.findAllDepByHospCode(dto));
	}
	
	/**
	 *  @desp  ：根据编码获取病区
	 *  @Author： lhj
	 *  @param hospCode
	 *  @return
	 *  @Date  :2018年1月29日下午7:55:23
	 */
	@ResponseBody
	@RequestMapping(value = "getWardByCode")
	public InvokeResult getWardByCode(String hospCode,String depGroupCode,String depCode,String wardCode){
		return InvokeResult.success(drgsIndexCalFacade.getWardByCode(hospCode,depGroupCode,depCode,wardCode));
	}
	
	/**
	 *  @desp  ：获取各级医师
	 *  @Author： lhj
	 *  @param dto
	 *  @return
	 *  @Date  :2018年2月2日下午5:02:34
	 */
	@ResponseBody
	@RequestMapping(value = "getDoctor")
	public InvokeResult getDoctor(IndexCalDTO dto){
		return InvokeResult.success(drgsIndexCalFacade.getDoctor(dto));
	}
	
	/**
	 * @methodname    :getCaseListForDelete
	 * @description   :系统全局搜索病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月29日
	 */
	@ResponseBody
	@RequestMapping(value = "findCaseListGlobal")
	public InvokeResult findCaseListGlobal(String filterStr){
		return drgsIndexCalFacade.findCaseListGlobal(filterStr);
	}
	
	/**
	 * @methodname    :deleteCase
	 * @description   :删除系统病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月30日
	 */
	@ResponseBody
	@RequestMapping(value = "deleteCase")
	public InvokeResult deleteCase(String parid){
		return drgsIndexCalFacade.deleteCase(parid);
	}
	/**
	 *  @desp  ：获取系统趋势图（所有年月）
	 *  @Author： liuhongjun
	 *  @param dto
	 *  @return
	 *  @Date  :2018年3月8日下午5:01:54
	 */
	@ResponseBody
	@RequestMapping(value = "findTrendData",method=RequestMethod.POST)
	public InvokeResult findTrendData(IndexCalDTO dto){
		return drgsIndexCalFacade.findTrendData(dto);
	}
	/**
	 *  @Discription：检测系统是否含有病组的绩效管理值
	 *  @Author： liuhongjun
	 *  @return
	 *  @Date:2018年3月21日下午2:18:11
	 */
	@ResponseBody
	@RequestMapping(value = "isDrgManager",method=RequestMethod.POST)
	public boolean isDrgManager(){
		return drgsIndexCalFacade.isDrgManager();
	}
	
	/**
	 * 
	 *  @Discription：获取病例表中的最大时间
	 *  @Author： ：fulianxia
	 *  @return
	 *  @Date:2018年12月27日
	 */
	@ResponseBody
	@RequestMapping(value="getLatestPatientDate",method=RequestMethod.POST)
	public InvokeResult getLatestPatientDate(){
		return drgsIndexCalFacade.getLatestPatientDate();
	}
}
